home *** CD-ROM | disk | FTP | other *** search
/ PC User 2003 January / Disc 3 / Amethyst.iso / rl / build-bin / kdebuild < prev    next >
Encoding:
Text File  |  2001-08-09  |  4.4 KB  |  232 lines

  1. #!/bin/sh
  2. # kdebuild - build kde modules
  3. # $* = modules to build
  4.  
  5. # copyright (c) 2001 Joseph Cheek, Redmond Linux Corp.
  6. # joseph@redmondlinux.org, www.redmondlinux.org
  7. # released under GPL
  8.  
  9. BADCOMPILE=""
  10. BADRECOMPILE=""
  11.  
  12. declare -x CVSROOT=:pserver:anonymous@anoncvs.kde.org:/home/kde
  13. KDECVSHOME=/opt/redmondlinux/sources/kde
  14. CVSBRANCH=KDE_2_2_BRANCH
  15.  
  16. SRPMSOURCEDIR=/usr/src/RedmondLinux/SOURCES
  17. SRPMSPECDIR=/usr/src/RedmondLinux/SPECS
  18. FINISHEDRPMDIR=/usr/src/RedmondLinux/RPMS
  19.  
  20. BUILD_NUM_FILE=/opt/redmondlinux/builds/CURRENT_BUILD
  21. BUILD_NUM=`cat $BUILD_NUM_FILE`
  22.  
  23.  
  24. _cvsup() {
  25. # download latest sources via cvs for $1
  26.  
  27. # koffice, kdenonbeta don't follow standard CVS tagging
  28.   [ "$1" = "koffice" ] && CVSBRANCH=HEAD
  29.   [ "$1" = "kdenonbeta" ] && CVSBRANCH=HEAD
  30.  
  31.   cd $KDECVSHOME || return 1
  32.   cvs -q up -r "$CVSBRANCH" "$1" || return 1
  33.   cd "$1" || return 1
  34.   [ -f admin/Makefile.common ] &&
  35.     { make -f admin/Makefile.common cvs-clean || return 1 }
  36.   [ -f admin/Makefile.common ] &&
  37.     { make -f admin/Makefile.common || return 1 }
  38.   cd - || return 1
  39.   tar --use-compress-program=bzip2 -cf $1.tar.bz2 $1 || return 1
  40.  
  41. }
  42.  
  43.  
  44. _cvsco() {
  45. # download latest sources via cvs for $1
  46.  
  47. # koffice, kdenonbeta don't follow standard CVS tagging
  48.   [ "$1" = "koffice" ] && CVSBRANCH=HEAD
  49.   [ "$1" = "kdenonbeta" ] && CVSBRANCH=HEAD
  50.  
  51.   cd $KDECVSHOME || return 1
  52.   rm -rf "$1" || return 1
  53.   cvs -q co -r "$CVSBRANCH" "$1" || return 1
  54.   cd "$1" || return 1
  55.   [ -f admin/Makefile.common ] &&
  56.     { make -f admin/Makefile.common || return 1 }
  57.   cd - || return 1
  58.   tar --use-compress-program=bzip2 -cf $1.tar.bz2 $1 || return 1
  59.  
  60. }
  61.  
  62.  
  63. _installsrpm() {
  64. # install SRPM $1 if needed
  65.  
  66. #FIXME: install SRPM if needed
  67.  
  68.   return 0
  69.  
  70. }
  71.  
  72.  
  73. _getspecfile() {
  74. # Find the path of the spec file for $1
  75.  
  76.   [ -f $SRPMSPECDIR/$1.spec ] && { echo $SRPMSPECDIR/$1.spec; return }
  77.   [ -f $SRPMSPECDIR/${1}2.spec ] && { echo $SRPMSPECDIR/${1}2.spec; return }
  78.   return 1
  79.  
  80. }
  81.  
  82.  
  83. _getname() {
  84. # Find the Name: in the spec file $1
  85.  
  86.   local a;
  87.  
  88.   a=`grep -i Name.*: "$1" | cut -d : -f 2`
  89.   [ $? != 0 ] && return 1
  90.   echo $a
  91.  
  92. }
  93.  
  94.  
  95. _getversion() {
  96. # Find the Version: in the spec file $1
  97.  
  98.   local a;
  99.  
  100.   a=`grep -i Version.*: "$1" | cut -d : -f 2`
  101.   [ $? != 0 ] && return 1
  102.   echo $a
  103.  
  104. }
  105.  
  106.  
  107. _getrelease() {
  108. # Find the Release: in the spec file $1
  109.  
  110.   local a;
  111.  
  112.   a=`grep -i Release.*: "$1" | cut -d : -f 2`
  113.   [ $? != 0 ] && return 1
  114.   echo $a
  115.  
  116. }
  117.  
  118.  
  119. _getrpmfile() {
  120. # Find the path(s) of the built rpm file(s) for $1
  121.  
  122.   local a FILES=""
  123.  
  124.   SPECFILE=`_getspecfile $1` || return 1
  125.   NAME=`_getname "$SPECFILE"` || return 1
  126.   VERSION=`_getversion "$SPECFILE"` || return 1
  127.   RELEASE=`_getrelease "$SPECFILE"` || return 1
  128.  
  129.   for a in $FINISHEDRPMDIR/i586/$NAME-*$VERSION-$RELEASE.i586.rpm \
  130.     $FINISHEDRPMDIR/noarch/$NAME-*$VERSION-$RELEASE.noarch.rpm \
  131.     $FINISHEDRPMDIR/i386/$NAME-*$VERSION-$RELEASE.i386.rpm; do
  132.     [ -f $a ] && FILES="$FILES $a"
  133.   done
  134.  
  135.   [ "$FILES" != "" ] && { echo $FILES; return }
  136.  
  137.   return 1
  138.  
  139. }
  140.  
  141.  
  142. _fixrelease() {
  143. # Change "Release:" in srpm to show current release
  144.  
  145.   SPECFILE=`_getspecfile $1` || return 1
  146.   perl -pi -e "s/Release.*:.*rl/Release\t\t: ${BUILD_NUM}rl/g" \
  147.     $SPECFILE || return 1
  148.  
  149. }
  150.  
  151.  
  152. _preprpm() {
  153. # prepare RPM $1 for compilation
  154.  
  155.   _installsrpm "$1" || return 1
  156.   cd $KDECVSHOME || return 1
  157.   cp $1.tar.bz2 $SRPMSOURCEDIR || return 1
  158.   _fixrelease "$1"
  159.  
  160. }
  161.  
  162.  
  163. _compilerpm() {
  164. # build the $1 rpm
  165.  
  166.   SPECFILE=`_getspecfile $1` || return 1
  167.   time rpm -ba $SPECFILE || return 1
  168.  
  169. }
  170.  
  171.  
  172. _installrpm() {
  173. # install the $1 rpm
  174.  
  175.   RPMFILE=`_getrpmfile $1` || return 1
  176.   #FIXME: try standard -Uvh first?
  177.   rpm -Uvh --force --nodeps $RPMFILE || return 1
  178.  
  179. }
  180.  
  181.  
  182. kdecompile() {
  183. # compile kde package $1 according to normal rules
  184.  
  185.   _cvsup "$1" || return 1
  186.   _preprpm "$1" || return 1
  187.   _compilerpm "$1" || return 1
  188.   _installrpm "$1" || return 1
  189.  
  190. }
  191.  
  192.  
  193. kderecompile() {
  194. # compile kde package $1 according to recompile rules
  195.  
  196.   _cvsco "$1" || return 1
  197.   _preprpm "$1" || return 1
  198.   _compilerpm "$1" || return 1
  199.   _installrpm "$1" || return 1
  200.  
  201. }
  202.  
  203.  
  204. # main()
  205.  
  206. for a; do
  207.   kdecompile $a
  208.   if [ $? != 0 ]; then
  209.     BADCOMPILE="$BADCOMPILE $a"
  210.     echo "***" Compile error for $a
  211.   fi
  212. done
  213.  
  214. echo The following packages didn\'t compile:
  215. echo $BADCOMPILE
  216.  
  217. for a in $BADCOMPILE; do
  218.   kderecompile $a
  219.   if [ $? != 0 ]; then
  220.     BADRECOMPILE="$BADRECOMPILE $a"
  221.     echo "***" Compile error for $a
  222.   fi
  223. done
  224.  
  225. echo The following packages didn\'t compile:
  226. echo $BADCOMPILE
  227.  
  228. echo The following packages didn\'t recompile:
  229. echo $BADRECOMPILE
  230.